DynamoDBを使用し、データベースを作り、クエリしてみました。
こんにちは。イムチェジョンです。 今回はAWSの実践的チュートリアルを参考してハンズオンをしてみました。 やってみたのは[AWS Management Consoleを使い、NoSQL テーブルを作成してクエリを実行する]です。
アジェンダ
- ハンズオンに入る前
- NoSQL テーブルを作成する
- NoSQL テーブルにデータを追加する
- NoSQL テーブルでクエリを実行
- 既存の項目を削除する
- まとめ
0. ハンズオンに入る前
今回のハンズオンに入る前に知っておくといい知識について簡単に整理しました。
NoSQL
- Not Only SQLを略したこと。
- 既存のリレーショナルデータベースではなく、違う形のデータ保存記述を意味
- 文書、グラフ、キー値、インメモリ、検索を含め様々なデータモデルを使用
DynamoDB
- AWSで提供する NoSQL データベースサービス
- 高速で予測可能なパフォーマンスと拡張性を提供
- 保管時の暗号化を提供し、機密データの保護における負担と複雑な作業を解消
パーティションキー
- >、between、begins_withなどでクエリを使用して関連項目の必要なグループを検索可能
- ソートキーは任意で設定する
ソートキー
- パーティションスペースは、パーティションキーのハッシュ値を利用して決定するが、同じパーティションキーならソートキーの値を基準にソートされる
- この場合、2つ以上の項目が同一のパーティション鍵の値を持つことはできるが、ソート鍵まで同じ値を持つことはできない
- ソートキーは任意で設定する
1. NoSQL テーブルを作成する
まず、NoSQL テーブルを作成してみましょう。
DynamoDBページで新しいテーブルを作成します。
DynamoDBの名前、パーティションキー、ソートキーを入力します。 また、今回のハンズオンではAuto Scalingの機能を追加するためにデフォルト設定を解除します。
デフォルト設定を解除すると、追加設定が出ますが、ここでAuto Scalingの設定の部分があります。 ここでDynamoDBでAuto Scaling使うため、新しいロールを生成することに設定をします。 これを終わりでDynamoDBを作成します。
NoSQL テーブル(DynamoDB)が作成できたのを確認します。
2. NoSQL テーブルにデータを追加する
続いてNoSQL テーブルにデータを追加してみましょう。 今回のハンズオンで入れるデータは音楽のアーチスト(Artist)と曲名(SongTitle)なので、それに合うデータを入れます。
DynamoDBページでテーブルに入り、先に作ったMusicテーブルを選択します。 テーブルの項目をクリックすると項目を追加できます。 データを追加するために、[項目の作成]をクリックします。
項目を作成するためにパーティションキーとソートキーに値を入力し、保存をします。
保存できることを確認しました。
3. NoSQL テーブルでクエリを実行
次には追加したクエリを実行し、データを検索してみましょう。 クエリを実行する前に検索がよくできるかを確認するためにデータを入れました。
クエリで検索するためにクエリを選択し、パーティジョンキーのArtistの部分にThe Acme Bandを入力します。 こうするとArtistの値がThe Acme Bandの項目だけ検索します。
もっと詳しく検索したい時にはソートキーの活用もできます。 例えば、上で検索したThe Acme Bandというアーチストの曲名の中で「S」で始まるのを探したいと仮定してみましょう。 Artistの値はThe Acme Bandをし、追加でソートキーの部分にBegins withを選択して値でSを入力します。 こうするとThe Acme Bandの曲名の中でSで始まるStill to Loveだけ検索します。
4. 既存の項目を削除する
最後に項目を削除し、今回のハンズオンで使ったテーブルまで削除してみましょう。 テーブルを削除しないまま置いとくとずっと値段が発生する危険性があるので、ハンズオン及び練習が終わると早く削除しましょう。
まず、項目を削除です。 削除したい項目を選択し、アクションで削除をクリックすると簡単に削除できます。
最後にテーブルの削除です。 削除したいテーブルを選択し、テーブルの削除をクリックすると削除できます。
この時、バックアップも作成をできます。 今回は削除だけするので、deleteを入力して削除をクリックすると削除できます。
5. まとめ
今回はAWS DynamoDBを使ってみました。 入社前にはMySQLなどのリレーショナルデータベースをよく利用したので、NoSQLは慣れてないんですが、今回に実際に利用してみながらリレーショナルデータベースとNoSQLの違いを理解できました。